def findSubsequences(nums):
    res = []
    path = []
    def backtrack(nums, startIndex):
        repeat = []                 # 这里使用数组来进行去重操作
        if len(path) >= 2:          # 子集问题上加上一个限制：至少有两个元素
            res.append(path[:])     # 切片复制 这里不要加return，取树上的节点
        for i in range(startIndex, len(nums)):
            if nums[i] in repeat:
                continue
            if len(path) >= 1:
                if nums[i] < path[-1]:
                    continue
            repeat.append(nums[i])  # 记录这个元素在本层用过了，本层后面不能再用了
            path.append(nums[i])
            backtrack(nums, i + 1)  # 递归
            path.pop()              # 回溯
    backtrack(nums, 0)
    return res

#测试
if __name__ == '__main__':
   print(findSubsequences([4,6,7,7]))
   print(findSubsequences([6,5,2,2]))